import { createStore } from 'vuex'

export default createStore({
  // 唯一数据源
  state: {
    // 选择城市信息
    choseCityInfo: window.localStorage.getItem('cityinfo') ? JSON.parse(window.localStorage.getItem('cityinfo') as string) : {
      id: '440100',
      name: '广州'
    },
    // 用户登录成功的 token 信息
    token: window.localStorage.getItem('token') ? window.localStorage.getItem('token') : ''
  },
  // 类似于计算属性，对state 数据进行二次计算
  getters: {
  },
  // 同步修改方法
  mutations: {
    // 选择了一个城市
    SETCITY(state: any, cityInfo) {
      window.localStorage.setItem('cityinfo', JSON.stringify(cityInfo))
      state.choseCityInfo = cityInfo
    },
    // 更新 token 信息，内部若不包含异步信息，直接修改即可
    UTOKEN: function (state, token) {
      window.localStorage.setItem("token", token);
      state.token = token;
    }
  },
  // 异步修改方法
  actions: {
    setcity(context, cityInfo) {
      context.commit("SETCITY", cityInfo)
    },
    updateToken(context, token){
      context.commit("UTOKEN", token)
    }
  },
  // 分模块化控制
  modules: {
  }
})
